/**
 * @author : Spike
 * @purpose: 后台通用js
 */

(function($) {
    $.T = {

        /**
         * [全选/反选函数]
         * @param  e            [点击对象]
         * @param  target_class [目标的class]
         */
        select: function(e, target_class)
        {
            var e = $(e);
            if( e.attr("type") !== 'checkbox' )
                return;

            if( typeof target_class !== 'string' || $.T.empty(target_class) )
                return;

            var target = $('.'+target_class);
            if(target.length <= 0)
                return;

            var opt = e.attr("checked") === 'checked' ? true : false;
            target.attr('checked', opt);
        },

        /**
         * [弹窗函数]
         */
        alert: function(content, callback) {
            $.dialog({
                id     : 'sys-alert',
                title  : '<h4>提示 <span class="semi-bold">信息</span></h4>',
                content: '<h5>'+content+'</h5>',
                okVal: '确认',
                ok: function(){
                    if(callback && typeof callback === 'function')
                    {
                        callback();
                    }
                }
            });
        },

        /**
         * [确认函数]
         */
        confirm: function(content, ok_callback, cancel_callback) {
            $.dialog({
                id     : 'sys-confirm',
                title  : '<h4>提示 <span class="semi-bold">信息</span></h4>',
                content: '<h5>'+content+'</h5>',
                lock   : true,
                opacity: 0.45,
                okVal: '确认',
                ok: function(){
                    if(ok_callback && typeof ok_callback === 'function')
                    {
                        ok_callback();
                    }
                },
                cancelVal: '取消',
                cancel: function(){
                    if(cancel_callback && typeof ok_callback === 'function')
                    {
                        cancel_callback();
                    }
                }
            });
        },

        /**
         * [返回上一页]
         */
        goback: function() {
            var target = window;
            var length = $.T.to_int(target.history.length);
            if (length > 1) {
                target.history.back();
            } else {
                alert("无法返回：这已经是第一条记录。");
            }
        },

        /**
         * [刷新]
         */
        refresh: function() {
            window.location.reload();
        },

        /**
         * [跳转到指定页面]
         * @param  [string] url
         */
        redirect: function(url) {
            if (typeof(url) === 'string' && url !== '') {
                window.location.href = encodeURI(url);
            }
        },

        /**
         * [检测对象是否为空,PHP同名函数]
         * @param  [obj]
         * @return [bool]
         */
        empty: function(obj) {
            if (obj === false) return true;
            if (obj == undefined) return true;
            if (obj === 0) return true;
            if (obj.length === 0) return true;
            if (typeof obj === "string") {
                var str = obj.replace(/(^\s*)/g, "");
                return (str === '' || str === '0' || str === 'false') ? true : false;
            }
            return false;
        },

        /**
         * 去掉字符串头尾空格
         */
        trim: function(str) {
            if (typeof str !== 'string')
                return '';

            return str.replace(/(^\s*)|(\s*$)/g, "");
        },


        /**
         * 去掉字符串头空格
         */
        ltrim: function(str) {
            if (typeof str !== 'string')
                return '';

            return str.replace(/(^\s*)/g, "");
        },

        /**
         * 去掉字符串尾空格
         */
        rtrim: function(str) {
            if (typeof str !== 'string')
                return '';

            return str.replace(/(\s*$)/g, "");
        },

        /**
         * [转换为int, 失败转为0]
         * @param  [mixed]
         * @return [int]
         */
        to_int: function(str) {
            if (typeof str === 'number') {
                return parseInt(str);
            }
            if (typeof str === 'string' && str.replace(/(^\s*)/g, "") !== '') {
                return isNaN(str) ? 0 : parseInt(str);
            }
            return 0;
        },

        /**
         * [转换为货币单位, 精确到分]
         * @param  [mixed]
         * @return [float]
         */
        to_money: function(str) {
            if (isNaN(str)) {
                return 0.00;
            }
            return Math.floor(str * Math.pow(10, 2)) / Math.pow(10, 2);
        },

        reset_form: function(obj) {
            var obj = $(obj);
            if (obj.length > 0) {
                var form = obj.parents('form');
                // 普通表单
                form[0].reset();

                // select2 重置为第一个option
                $(form).find("select.select2").each(function(i, item) {
                    $(this).select2('val', $(this).find('option:first').val());
                });
            }
        },
    }
})(jQuery);